EC2でIPv4のプライベートIPを固定する方法の整理
EC2におけるプライベートIP
EC2では仮想的なNICである、ENIに対してプライベートIPを割り当てることが可能です。 何も指定しない場合は、自動でサブネットのCIDRからIPアドレスが割り当てられます。
今回はこれを自分で指定する方法を解説していきます。
インスタンス起動時に指定する方法
インスタンス起動時のネットワーク設定の項目から、右上の「編集」を押します。
すると、VPCの指定やサブネットの指定ができるようになるので、「高度なネットワーク設定」をクリックすると以下のような項目が表示されます。
ここの「プライマリIP」に指定したいプライベートIPを入力し起動すると、指定のプライベートIPで起動することが可能です。
ただ、指定することができるプライベートIPにはいくつか条件があるので気をつけてください。
具体的には以下のような条件です。
- 使用されていないIPアドレスであること
- インスタンスを起動するサブネットのCIDRに入っていること
- VPCが予約していないIPアドレスであること: IPv4 のサブネットのサイズ設定
後からプライベートIPを指定する方法
後からプライベートIPを指定するのは少し面倒です。
具体的には以下の3つの方法があります。
- セカンダリIPを付与する
- 新しいENIをアタッチする
- インスタンスを再作成する
以下で順に説明していきます
ここで注意点があり、「セカンダリIPの付与」と「新しいENIのアタッチ」ではプライベートIPが増えてしまいます。 ただ一つのプライベートIPを付与することはできません。
ENIにセカンダリIPを付与する
インスタンスにアタッチされているENIにセカンダリIPを付与することができます ただ、プライマリIPは削除することができないので気をつけてください。
まず、インスタンスの一覧の画面からプライベートIPアドレスを追加したいインスタンスにチェックを入れてください。 その後、「アクション」>「ネットワーキング」> 「IPアドレスの管理」をクリックしてください。
IPアドレスの管理画面に移動するので、そこから新しく追加したいIPアドレスを入力し「保存ボタン」を押します。 これで作業は完了です。
Amazon Linux 2023(AMI: al2023-ami-2023.3.20240219.0-kernel-6.1-x86_64)ではインスタンスの再起動なしでプライベートIPをOS側から認識していました。
ENIを新しくアタッチする
まず初めに新しいENIを作成します。 ここで、ENIに割り当てるプライマリIPを指定することが可能です。
次に、インスタンスの一覧の画面からプライベートIPアドレスを追加したいインスタンスにチェックを入れてください。 その後、「アクション」>「ネットワーキング」> 「IPアドレスの管理」をクリックしてください。
先ほど作成したENIを指定しアタッチします。 こちらの方法でも先ほどと同様のAmazon Linux 2023ではインスタンスの再起動なしに新しいNICを認識ていました。
ただ、この方法でも、プライベートIPは増えてしまいます。 理由としては0番目のENIはデタッチできないためです。
インスタンスを再作成する
こちらの方法なら、一つのプライベートIPを持った同様のインスタンスを作成できます。
ただ、インスタンスの再作成となってしまうので、事実上再起動のようなものです。 インスタンスを停止したくない場合には適さないでしょう。
流れとしては以下の通りです。
- AMIを作成する
- AMIからインスタンスを起動する <= ここでプライマリIPを指定する
AMIを作成しそこからインスタンスを起動する方法は以下の記事が参考になると思います。
無事に新しいインスタンスが起動したら、不要なAMIと古いインスタンスを削除するのを忘れないようにしましょう
最後に
今回はIPv4のプライベートIPを指定する方法について整理しました。 プライマリIPを変更するのは少し複雑なので、プライベートIPを固定する必要がある場合はなるべく起動時にやってしまうのが良いと思います。 セカンダリIPも指定できるので、あまり問題にはならないかもしれませんが...